home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue47 / Clinic / NameSpcU.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1999-05-28  |  3.3 KB  |  121 lines

  1. unit NameSpcU;
  2.  
  3. {$ifdef Ver90} //Delphi 2
  4.   {$define Delphi2}
  5. {$endif}
  6. {$ifdef Ver93} //BCB1
  7.   {$define Delphi2}
  8. {$endif}
  9.  
  10. interface
  11.  
  12. uses
  13.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  14.   StdCtrls, ComCtrls;
  15.  
  16. type
  17.   TForm1 = class(TForm)
  18.     btnInternetCache: TButton;
  19.     lstFolderContents: TListBox;
  20.     btnRecycledBin: TButton;
  21.     lstSpecialFolder: TListBox;
  22.     procedure FormCreate(Sender: TObject);
  23.     procedure btnInternetCacheClick(Sender: TObject);
  24.     procedure btnRecycledBinClick(Sender: TObject);
  25.     procedure lstSpecialFolderClick(Sender: TObject);
  26.   end;
  27.  
  28. var
  29.   Form1: TForm1;
  30.  
  31. implementation
  32.  
  33. uses
  34. {$ifdef Delphi2}
  35.   OleAuto, Ole2,
  36. {$else}
  37.   ComObj,
  38. {$endif}
  39.   NameHlpU, ShlObj;
  40.  
  41. {$R *.DFM}
  42.  
  43. type
  44.   TFolder = record
  45.     Name: String;
  46.     ID: Cardinal;
  47.   end;
  48. const
  49.   Folders: array[0..29] of TFolder = (
  50.     (Name: 'CSIDL_DESKTOP'; ID: $0000),
  51.     (Name: 'CSIDL_INTERNET'; ID: $0001),
  52.     (Name: 'CSIDL_PROGRAMS'; ID: $0002),
  53.     (Name: 'CSIDL_CONTROLS'; ID: $0003),
  54.     (Name: 'CSIDL_PRINTERS'; ID: $0004),
  55.     (Name: 'CSIDL_PERSONAL'; ID: $0005),
  56.     (Name: 'CSIDL_FAVORITES'; ID: $0006),
  57.     (Name: 'CSIDL_STARTUP'; ID: $0007),
  58.     (Name: 'CSIDL_RECENT'; ID: $0008),
  59.     (Name: 'CSIDL_SENDTO'; ID: $0009),
  60.     (Name: 'CSIDL_BITBUCKET'; ID: $000a),
  61.     (Name: 'CSIDL_STARTMENU'; ID: $000b),
  62.     (Name: 'CSIDL_DESKTOPDIRECTORY'; ID: $0010),
  63.     (Name: 'CSIDL_DRIVES'; ID: $0011),
  64.     (Name: 'CSIDL_NETWORK'; ID: $0012),
  65.     (Name: 'CSIDL_NETHOOD'; ID: $0013),
  66.     (Name: 'CSIDL_FONTS'; ID: $0014),
  67.     (Name: 'CSIDL_TEMPLATES'; ID: $0015),
  68.     (Name: 'CSIDL_COMMON_STARTMENU'; ID: $0016),
  69.     (Name: 'CSIDL_COMMON_PROGRAMS'; ID: $0017),
  70.     (Name: 'CSIDL_COMMON_STARTUP'; ID: $0018),
  71.     (Name: 'CSIDL_COMMON_DESKTOPDIRECTORY'; ID: $0019),
  72.     (Name: 'CSIDL_APPDATA'; ID: $001a),
  73.     (Name: 'CSIDL_PRINTHOOD'; ID: $001b),
  74.     (Name: 'CSIDL_ALTSTARTUP'; ID: $001d),
  75.     (Name: 'CSIDL_COMMON_ALTSTARTUP'; ID: $001e),
  76.     (Name: 'CSIDL_COMMON_FAVORITES'; ID: $001f),
  77.     (Name: 'CSIDL_INTERNET_CACHE'; ID: $0020),
  78.     (Name: 'CSIDL_COOKIES'; ID: $0021),
  79.     (Name: 'CSIDL_HISTORY'; ID: $0022));
  80.  
  81. procedure TForm1.FormCreate(Sender: TObject);
  82. var
  83.   Loop: Cardinal;
  84. begin
  85.   for Loop := Low(Folders) to High(Folders) do
  86.     lstSpecialFolder.Items.AddObject(
  87.       Folders[Loop].Name, TObject(Folders[Loop].ID))
  88. end;
  89.  
  90. const
  91. {$ifdef Delphi2}
  92.   IID_InternetExplorerCache: TGUID = (
  93.     D1:$7BD29E00;D2:$76C1;D3:$11CF;D4:($9D,$D0,$00,$A0,$C9,$03,$49,$33));
  94.   IID_RecycleBin: TGUID = (
  95.     D1:$645FF040;D2:$5081;D3:$101B;D4:($9F,$08,$00,$AA,$00,$2F,$95,$4E));
  96. {$else}
  97.   IID_InternetExplorerCache: TGUID = '{7BD29E00-76C1-11CF-9DD0-00A0C9034933}';
  98.   IID_RecycleBin: TGUID = '{645FF040-5081-101B-9F08-00AA002F954E}';
  99. {$endif}
  100.  
  101. procedure TForm1.btnInternetCacheClick(Sender: TObject);
  102. begin
  103.   GetFolderItems(
  104.     CreateFolderObject(
  105.       GetSpecialFolderClsID('Cache')), lstFolderContents.Items)
  106. end;
  107.  
  108. procedure TForm1.btnRecycledBinClick(Sender: TObject);
  109. begin
  110.   GetFolderItems(
  111.     CreateFolderObject(IID_RecycleBin), lstFolderContents.Items)
  112. end;
  113.  
  114. procedure TForm1.lstSpecialFolderClick(Sender: TObject);
  115. begin
  116.   Caption := GetSpecialFolderLocation(
  117.     Cardinal(lstSpecialFolder.Items.Objects[lstSpecialFolder.ItemIndex]))
  118. end;
  119.  
  120. end.
  121.